功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围:
import math while True: try: n = int(input()) for i in range(2, int(math.sqrt(n)+1)): while n % i ==0: print(i, end=' ') n = n // i if n != 1: print(n) except: break
a = int(input()) def sub(num): if num % 2 == 0: return 2, num // 2 else: i = 1 while (2 * i + 1)*2 * i + 1 <= num: if num % (2 * i + 1) == 0: return 2 * i + 1, num // (2 * i + 1) i = i + 1 return 0, num s_list = [] s1, s2 = sub(a) while s1 != 0: s_list.append(s1) s1, s2 = sub(s2) if s2 > 1: s_list.append(int(s2)) print(' '.join(str(s) for s in s_list))
def factor(N): res = [] if N > 1: c = int(N**0.5) while N % c: c = c - 1 if c == 1: res.append(int(N)) # int !!!!! else: res = res + factor(c) res = res + factor(N / c) return res if __name__ == "__main__": N = int(input()) res = sorted(factor(N)) res = list(map(str, res)) print(" ".join(res))
import math num = int(input()) prime = 2 s = '' while prime < math.sqrt(num) + 1: if num%prime != 0: prime += 1 else: num=num//prime s = s + str(prime) + ' ' s = s + str(num) print(s)
num=int(input()) lst=[] while num%2==0: lst.append(2) num=num//2 while num%3==0: lst.append(3) num=num//3 while num%5==0: lst.append(5) num=num//5 while num%7==0: lst.append(7) num=num//7 while num%17==0: lst.append(17) num=num//17 while num%13==0: lst.append(13) num=num//13 while num%23==0: lst.append(23) num=num//23 while num%107==0: lst.append(107) num=num//107 if num!=1: lst.append(num) lst.sort for j in lst: print(j,end=' ')
for i in range(7,num//30):
num=num//i
就一直提醒超时,对着答案一个一个写出来,就能全部通过啦def zhishu(num): if num==2: return num else: for i in range(2,int(num**0.5)+1): if num%i==0: return 0 break return num def shuchu(n,start): if zhishu(n)==n: print(n,end=' ') else: for j in range(start,int(n**0.5)+1): if zhishu(j)==j: if n%j==0: print(j,end=' ') n=n//j start=j shuchu(n,start) if __name__=='__main__': a=int(input()) sum=0 start=2 shuchu(a,start) 有大佬知道为啥这样错的吗,每次到最后一位了以后,他会突然开始做乘法